#include "ASMInstruction.hpp"
#include "CodeGen.hpp"
#include "Module.hpp"

#include <iostream>
#include <memory>
#include <unordered_map>

void translate_main(CodeGen *codegen); // 将 main 函数翻译为汇编代码

int main() {
    auto *module = new Module();
    auto *codegen = new CodeGen(module);

    // 告诉汇编器将汇编放到代码段
    codegen->append_inst(".text", ASMInstruction::Atrribute);

    translate_main(codegen);

    std::cout << codegen->print();
    delete codegen;
    delete module;
    return 0;
}

// TODO: 翻译你优化后的IR为RISC-V目标代码
void translate_main(CodeGen *codegen) {
    std::unordered_map<std::string, int> offset_map;


    /* 声明 main 函数 */ 

    /* main 函数开始 */

    /* main 函数的 Prologue (序言) */
    
    /* main 函数的 label_entry */

    /* ...逐步翻译每句IR */
   
    /* main 函数的 Epilogue (收尾) */
}
